//
// Created by LiuYou on 2021/6/18.
//

#include <cstdlib>
#include <cstdio>
#include <unistd.h>
#include <cstring>
#include "AnyTimer.hpp"

/*
 * 实现多任务的计时器
 *
 */


static void f1(void* ptr) {
    std::printf( "f1(): %s\n", ptr );
}

static void f2(void* ptr) {
    std::printf( "f2(): %s\n", ptr );
}

/**
 * @brief 由单一计时器来实现一个多任务的计时器。
 */
int main() {
    {
//        std::puts( "Begin!" );
//
//        // 5, f1, "aaa"
//        // 2, f2, "bbb"
//        // 7, f1, "ccc"
//        int job1 = at_addjob( 5, f1, (void*) "aaa" );
//        if (job1 < 0) {
//            std::fprintf( stderr, "at_addjob(): %s\n", strerror( -job1 ));
//            std::exit( 1 );
//        }
//        at_addjob( 2, f2, (void*) "bbb" );
//        at_addjob( 7, f1, (void*) "ccc" );
//        std::puts( "End!" );
    }

    {
        std::puts( "Begin!" );

        // 5, f1, "aaa"
        // 2, f2, "bbb"
        // 7, f1, "ccc"
        int job1 = at_addjob_repeat( 5, f1, (void*) "aaa" );
        if (job1 < 0) {
            std::fprintf( stderr, "at_addjob(): %s\n", strerror( -job1 ));
            std::exit( 1 );
        }
    }

    for (;;) {
        write( 1, ".", 1 );
        sleep( 1 );
    }


    std::exit( 0 );
}